package org.example.handler;

import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.example.entity.UserDealerImportForm;
import org.springframework.stereotype.Component;

/**
 * @author 望轩
 * @createDate 2025/5/19 15:10
 * 这是一个处理excel表中导入数据是否异常的处理器，参数userDealerImportForm就是我们导入的数据每行的结构，
 * 底层必须要继承IExcelModel, IExcelDataModel这两个excel的源码类
 * 然后主函数中实际把excel文件导入程序的时候，会返回一个result结果，这个结果中包含了导入成功的集合数据和导入失败的集合数据，
 * 其中导入失败的集合数据就是我们的处理器中return出的第一个参数为flase的第二个异常信息
 */
@Slf4j
@Component
public class DealerImportVerifyHandler implements IExcelVerifyHandler<UserDealerImportForm> {

    //注意这里的错误不要一个一个return，要不然的话校验的前面单元格的错误一return，后面的单元格既便有错误也不会再去校验了。
    //所以我们要一次性return所有的错误字符串拼接
    @Override
    public ExcelVerifyHandlerResult verifyHandler(UserDealerImportForm userDealerImportForm) {
        String level = userDealerImportForm.getLevel();
        String error1 = "";
        String error2 = "";

        if (!StringUtils.equals(level, "1") && !StringUtils.equals(level, "2")) {
            error1 = "客户类型格式错误,只能为1或2;";
            //return new ExcelVerifyHandlerResult(false, " 客户类型格式错误，只能为1或2");
        }

        String signStartTime = userDealerImportForm.getSignStartTime();
        //这里的签约时间我本来写的只能是2025-12-12，但是这样写到excel文件里面之后最后获取的是null。于是我干脆直接用aaa代替，这里后续再研究原因
        if (!StringUtils.equals(signStartTime, "aaa")) {
            error2 = "签约开始时间只能是aaa;";
            //return new ExcelVerifyHandlerResult(false, " 签约开始时间只能是aaa");
        }

        if (StringUtils.isNotEmpty(error1) || StringUtils.isNotEmpty(error2)) {
            StringBuilder errorResult = new StringBuilder(error1);
            errorResult.append(error2);
            return new ExcelVerifyHandlerResult(false, errorResult.toString());
        }


        return new ExcelVerifyHandlerResult(true);
    }
}